package com.ruoyi.pay.service;

import com.ruoyi.pay.entity.OrderInfo;

import java.util.List;
import java.util.Map;

public interface AliPayService {

    String tradeCreate(Long productId);

    /**
     * 异步通知 相关校验
     *
     * @SignatureVerification 对支付宝异步通知内容进行签名验证
     * @paramsSinspect 对订单状态进行校验  严格的二次校验
     * @processOrder  处理订单业务
     * @param params
     */
    void SignatureVerification(Map<String, String> params);


    /**
     * 对一部通知参数进行二次校验
     * @param params
     */
    void paramsSinspect(Map<String, String> params);

    /**
     * 处理订单
     * @param params 异步通知参数
     */
    void processOrder(Map<String, String> params);

    // 取消订单
    void cancelOrder(String outTradeNo);


    // 查询订单
    String queryOrder(String outTradeNo);

    // 退款查询
    String queryRefund(String orderNo);

    /**
     * 获取所有超时未支付订单
     * @param timeout 超时时间 分
     * @return
     */
    List<OrderInfo> queryTimeOutOrderInfo(int timeout);

    // 查单更新订单状态
    void checkOrderStatus(String outTradeNo);

    void refund(String orderNo, String reason);

    // 查看账单(获取账单下载地址)
    String queryBillUrl(String billDate, String type);

}
